Optimizing performance of computing systems can be important to operation of such systems. Users, other applications, components, etc. can depend on the proper operation of a specific application running as part of an integrated software architecture, performance optimization of which can be a complicated process.
One example of an integrated software architecture is an enterprise resource planning (ERP) software architecture, that many organizations employ to provide computer-based systems for management of internal and external resources, such as for example tangible assets, financial resources, materials, customer relationships, and human resources. In general, an ERP software architecture is designed to facilitate the flow of information between business functions inside the boundaries of the organization and manage the connections to outside service providers, stakeholders, and the like. Such architectures often include one or more centralized databases accessible by a core software platform that consolidates business operations, including but not limited to those performed by applications provided by third party vendors, into a uniform and organization-wide system environment. The core software platform can reside on a centralized server or alternatively be distributed across modular hardware and software units that provide “services” and communicate on a local area network or over a network, such as for example the Internet, a wide area network, a local area network, or the like.
As part of the installation process of the core software platform on computing hardware owned or operated by the organization, one or more customized features, configurations, business processes, or the like may be added to the default, preprogrammed features such that the core software platform is configured for maximum compatibility with the organization's business processes, data, and the like. Cooperation and inter-communication between the installed components and applications that provide such features can be facilitated by one or more interfaces tasked with exchanging data between various platforms and databases that may employ different data formats.
Tracking and verification of whether a correct, optimized interface is applied in each interaction between installed components of a complex, integrated software architecture can be very challenging. Because a single developer or even a single developer team is not generally responsible for creating and harmonizing content providers (e.g. applications, components, etc. that can be provided from one or more third party developers), a high probability exists for applications or components to inadvertently call interfaces that are not properly optimized for the current context of a communication interaction. In some instances, performance issues can be caused by inappropriate usage of interfaces for communication among applications and components in a software architecture. For example, a design time interface may be used at runtime, which can cause large processing overheads that can degrade performance significantly.